"""
变量在函数中的作用域
"""
def demo1():
    # 定义一个变量
    a = 10
    print("demo1函数内部：", a)
demo1()
# print("函数外部：", a)  # NameError: name 'a'
# 在函数外部访问函数内部定义的变量, 会报错, 因为变量a的作用域仅限于demo1函数内部
b = 20  # 在函数外部定义一个变量
def demo2():
    b = 30  # 在函数内部定义一个与全局变量同名的变量
    print("demo2函数内部：", b)  # 可以访问函数外部定义的变量
#  UnboundLocalError: local variable 'b' referenced before assignment
#  在函数内部访问变量b时, Python解释器会认为b是一个局部变量, 但此时b还没有被赋值, 因此会报错
#  如果想在函数内部访问全局变量b, 可以使用global关键字
def demo3():
    global b  # 声明b是一个全局变量
    print("demo3函数内部：", b)  # 可以访问函数外部定义的变量
    b = 30  # 修改全局变量b的值
    print("demo3函数内部 b：", b)

demo2()
demo3()
print("函数外部：", b)  # 可以访问函数外部定义的变量
# 全局变量: 在函数外部定义的变量, 作用域在整个模块内
# 局部变量: 在函数内部定义的变量, 作用域仅限于函数内部
# 如果在函数内部定义了一个与全局变量同名的变量, 那么函数内部使用的将是局部变量, 而不是全局变量